package gestorvideoclub.jdbc;

import gestorvideoclub.Ingreso;
import gestorvideoclub.Cliente;
import gestorvideoclub.util.*;
import java.util.*;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class IngresoJDBC {
    public static void altaIngreso(Ingreso ingreso){
        String sql = "insert into contabilidad (fecha, importe, descripcion, id_cliente, tipo) ";
        sql += " values ('"+UtilFecha.fechaMySQL(ingreso.getFecha())+"', "+ingreso.getImporte()+", ";
        sql += " '"+ingreso.getDescripcion()+"', "+ingreso.getCliente().getId();
        sql += ", '"+ingreso.getTipo()+"')";

        //System.out.println(sql);

        Connection con = null;
        Statement st = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            st.executeUpdate(sql);
            st.close();
        }catch(Exception e){
            System.out.println("Error al insertar un nuevo ingreso "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
    }

        public static ArrayList consultarIngresoPorFecha(Date fechaInicio, Date fechaFin){
        String sql = "select * from contabilidad where fecha between '"+UtilFecha.fechaMySQL(fechaInicio)+"'";
        sql+= " and '"+UtilFecha.fechaMySQL(fechaFin)+"' and tipo = 'Ingreso' order by Id";
        //System.out.println(sql);

        ArrayList<Ingreso> lista = new ArrayList<Ingreso>();
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try{
            lista = new ArrayList<Ingreso>();
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            while(rs.next()){
                Ingreso ingreso = new Ingreso();
                ingreso.setId(rs.getInt("Id"));
                String tex = rs.getString("fecha");
                ingreso.setFecha(UtilFecha.obtenerFechaBD(tex));
                ingreso.setImporte(rs.getDouble("importe"));
                ingreso.setDescripcion(rs.getString("descripcion"));

                Cliente cliente = new Cliente();
                int id = rs.getInt("id_cliente");
                cliente = ClienteJDBC.obtenerClientePorId(id);
                cliente.setId(id);
                ingreso.setCliente(cliente);
                
                ingreso.setTipo(rs.getString("tipo"));
                lista.add(ingreso);
            }
            rs.close();
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al obtener los ingresos  "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
        return lista;
    }
}
